﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.BusinessLogicLayer;
using CuaHangMayTinh.Utilities;

namespace CuaHangMayTinh.PresentationLayer
{
    /// <summary>
    /// form hiển thi, thêm, xóa, sửa đơn vị tính
    /// </summary>
    public partial class FormDonViTinh : Form, IFormTV<DonViTinhEntity>
    {
        /// <summary>
        /// tables chua danh sach entity
        /// </summary>
        public DataTable Table { get; set; }
        /// <summary>
        /// kiểm tra coi thử đây có phải là thêm hay không
        /// </summary>
        private bool Them = true;

        private string Text = string.Empty;

        /// <summary>
        /// danh sách đơn vị tính
        /// </summary>
        private List<DonViTinhEntity> donViTinhEntities;

        /// <summary>
        /// phương thức khởi tạo
        /// </summary>
        public FormDonViTinh()
        {
            InitializeComponent();
            splitContainer1.SplitterDistance = 0;
            donViTinhEntities = new List<DonViTinhEntity>();
            LoadListView();
        }

        public FormDonViTinh(bool[] so) : this()
        {
            if (so[0])
            {
                
            }
            if (so[1])
            {
                toolStripBtn_Them.Enabled = true;
                themToolStripMenuItem.Enabled = true;
            }
            if (so[2])
            {
                toolStripBtn_Xoa.Enabled = true;
                xoaToolStripMenuItem.Enabled = true;
            }
            if (so[3])
            {
                toolStripBtn_Sua.Enabled = true;
                suaToolStripMenuItem.Enabled = true;
            }
        }

        /// <summary>
        /// bắt sự kiên click của nút thêm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_them_click(object sender, EventArgs e)
        {
            splitContainer1.SplitterDistance = 40;
        }

        /// <summary>
        /// bắt sự kiên click của nút xóa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoa_click(object sender, EventArgs e)
        {
            if (dataGridViewX_Select.SelectedRows.Count > 0)
            {
                int i = 0;
                var c = MessageBox.Show("Bạn muốn xóa hay không", "Thông báo", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Warning);
                if (c == DialogResult.Yes)
                {
                    foreach (DataGridViewRow row in dataGridViewX_Select.SelectedRows)
                    {
                        if (DonViTinhManager.Delete((int) row.Cells[0].Value,ref Text))
                        {
                            i++;
                        }
                        else
                        {
                            MessageBox.Show(Text);
                        }
                    }
                    MessageBox.Show("Xóa thành công " + i + " đơn vị tính!");
                    LoadListView();
                }
            }
        }

        /// <summary>
        /// bắt sự kiên click của nút sửa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_sua_click(object sender, EventArgs e)
        {
            if (dataGridViewX_Select.SelectedRows.Count > 0)
            {
                btn_themNhanh.Text = "Cập nhật";
                splitContainer1.SplitterDistance = 40;
                var row = dataGridViewX_Select.SelectedRows[0];
                txt_ThemNhanh.Text = (string) row.Cells[1].Value;
                Them = false;
                btn_them_click(sender, e);
            }
        }

        /// <summary>
        /// bắt sự kiên click của nút tìm kiếm nhưng form này không cần
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_timkiem_click(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// bắt sự kiên click của nút thêm mới
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_themmoi_click(object sender, EventArgs e)
        {
            if (CheckInput())
            {
                if (Them)
                {
                    if (DonViTinhManager.Insert(new DonViTinhEntity(txt_ThemNhanh.Text), ref Text) > 0)
                    {
                        MessageBox.Show("Thêm thành công!");
                        splitContainer1.SplitterDistance = 0;
                        LoadListView();
                    }
                    else
                    {
                        MessageBox.Show(Text);
                    }
                }
                else
                {
                    var row = dataGridViewX_Select.SelectedRows[0];
                    if (DonViTinhManager.UpDate(new DonViTinhEntity((int)row.Cells[0].Value, txt_ThemNhanh.Text), ref Text))
                    {
                        MessageBox.Show("Cập nhật thành công !");
                        LoadListView();
                    }
                    else
                    {
                        MessageBox.Show(Text);
                    }
                }
            }
        }

        /// <summary>
        /// kiểm tra thông tin người nhập
        /// </summary>
        /// <returns></returns>
        public bool CheckInput()
        {
            if (StringHelper.IsNullorEmpty(txt_ThemNhanh.Text))
            {
                MessageBox.Show("Bạn chưa nhập thông tin vào !");
                return false;
            }
            return true;
        }

        /// <summary>
        /// load danh sách lên datagirview từ phương thức findall
        /// </summary>
        public void LoadListView()
        {
            DataTable dt = DonViTinhManager.Find_All();
            dt.Columns.Add("STT");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["STT"] = i+1;
            }
            dataGridViewX_Select.DataSource = DataUtil.ChangeColumn(dt);
            if (dataGridViewX_Select.Columns.Count > 0)
            {
                //dataGridViewX_Select.Columns[0].Visible = false;
            }
            dataGridViewX_Select.Columns["STT"].DisplayIndex = 0;
        }

        /// <summary>
        /// load danh sách lên datagirview từ datatable dt
        /// </summary>
        /// <param name="dt"></param>
        public void LoadListView(DataTable dt)
        {
            dt.Columns.Add("STT");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["STT"] = i;
            }
            dataGridViewX_Select.DataSource = dt;
            if (dataGridViewX_Select.Columns.Count > 0)
            {
                dataGridViewX_Select.Columns[0].Visible = false;
            }
        }

        private void themToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_them_click(sender,e);
        }

        private void xoaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_xoa_click(sender, e);
        }

        private void suaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_sua_click(sender, e);
        }

        private void dataGridViewX_Select_Click(object sender, EventArgs e)
        {
            splitContainer1.SplitterDistance = 0;
        }

    }
}
